import os.path
import sys
# FuncDir = os.path.dirname(os.path.abspath(__file__))
# sys.path.append(FuncDir)
from PlatformLayer.function.func_search_packages import search
from PlatformLayer.function.func_update_packages import update
from PlatformLayer.function.func_vague_search import vague_search
from PlatformLayer.function.func_get_serial_sourcelist import serial_sourcelist

# 功能选择界面
class MenuChoose():
    @classmethod
    def menu_choose(cls):
        # 打印选项菜单
        print('********> 选择需要的功能： <********')
        menu = \
    '''\
        # 选项 1：更新源
        # 选项 2：搜索软件包
        # 选项 3：模糊搜索软件包
        # 选项 4：根据服务序列号下载源地址\
    '''

        # -------- 判断用户选择的功能 --------
        while True:
            print(menu)
            choose = int(input('请输入选项： \n'))
            if choose < 1 or choose > len(menu.split('\n')):
                print('输入错误，请重新输入')
            else:
                break
        #根据选择跳转不同功能
        if choose == 1:
            cls.__func_update__()
        if choose == 2:
            cls.__func_search__()
        if choose == 3:
            cls.__func_vaguesearch__()
        if choose == 4:
            cls.__func_get_serial_sourcelist()

    # 更新源地址功能函数
    @classmethod
    def __func_update__(cls):
        update.main()
        # -------- 更新源完成后，询问是否去跳转搜索软件包功能 --------
        while True:
            userinput = input('====> 是否要搜索软件包    [Y/N] \n')
            if userinput == 'y' or userinput == 'Y':
                break
            elif userinput == 'n' or userinput == 'N':
                sys.exit()
            else:
                print('Warning！！：选择错误,请重新输入：')
        cls.__func_search__()

    @classmethod
    # 搜索安装包功能函数
    def __func_search__(cls):
        search.main()

    @classmethod
    def __func_vaguesearch__(cls):
        vague_search.vaguesearch()

    @classmethod
    def __func_get_serial_sourcelist(cls):
        serial_sourcelist.main()
        cls.menu_choose()


# 菜单入口函数
def main():
    MenuChoose.menu_choose()